home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / smartcardio / CardPermission.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.9 KB  |  149 lines

  1. package javax.smartcardio;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.security.Permission;
  7.  
  8. public class CardPermission extends Permission {
  9.    private static final long serialVersionUID = 7146787880530705613L;
  10.    private static final int A_CONNECT = 1;
  11.    private static final int A_EXCLUSIVE = 2;
  12.    private static final int A_GET_BASIC_CHANNEL = 4;
  13.    private static final int A_OPEN_LOGICAL_CHANNEL = 8;
  14.    private static final int A_RESET = 16;
  15.    private static final int A_TRANSMIT_CONTROL = 32;
  16.    private static final int A_ALL = 63;
  17.    private static final int[] ARRAY_MASKS = new int[]{63, 1, 2, 4, 8, 16, 32};
  18.    private static final String S_CONNECT = "connect";
  19.    private static final String S_EXCLUSIVE = "exclusive";
  20.    private static final String S_GET_BASIC_CHANNEL = "getBasicChannel";
  21.    private static final String S_OPEN_LOGICAL_CHANNEL = "openLogicalChannel";
  22.    private static final String S_RESET = "reset";
  23.    private static final String S_TRANSMIT_CONTROL = "transmitControl";
  24.    private static final String S_ALL = "*";
  25.    private static final String[] ARRAY_STRINGS = new String[]{"*", "connect", "exclusive", "getBasicChannel", "openLogicalChannel", "reset", "transmitControl"};
  26.    private transient int mask;
  27.    private volatile String actions;
  28.  
  29.    public CardPermission(String var1, String var2) {
  30.       super(var1);
  31.       if (var1 == null) {
  32.          throw new NullPointerException();
  33.       } else {
  34.          this.mask = getMask(var2);
  35.       }
  36.    }
  37.  
  38.    private static int getMask(String var0) {
  39.       if (var0 != null && var0.length() != 0) {
  40.          for(int var1 = 0; var1 < ARRAY_STRINGS.length; ++var1) {
  41.             if (var0 == ARRAY_STRINGS[var1]) {
  42.                return ARRAY_MASKS[var1];
  43.             }
  44.          }
  45.  
  46.          if (var0.endsWith(",")) {
  47.             throw new IllegalArgumentException("Invalid actions: '" + var0 + "'");
  48.          } else {
  49.             int var8 = 0;
  50.             String[] var2 = var0.split(",");
  51.  
  52.             label38:
  53.             for(String var6 : var2) {
  54.                for(int var7 = 0; var7 < ARRAY_STRINGS.length; ++var7) {
  55.                   if (ARRAY_STRINGS[var7].equalsIgnoreCase(var6)) {
  56.                      var8 |= ARRAY_MASKS[var7];
  57.                      continue label38;
  58.                   }
  59.                }
  60.  
  61.                throw new IllegalArgumentException("Invalid action: '" + var6 + "'");
  62.             }
  63.  
  64.             return var8;
  65.          }
  66.       } else {
  67.          throw new IllegalArgumentException("actions must not be empty");
  68.       }
  69.    }
  70.  
  71.    private static String getActions(int var0) {
  72.       if (var0 == 63) {
  73.          return "*";
  74.       } else {
  75.          boolean var1 = true;
  76.          StringBuilder var2 = new StringBuilder();
  77.  
  78.          for(int var3 = 0; var3 < ARRAY_MASKS.length; ++var3) {
  79.             int var4 = ARRAY_MASKS[var3];
  80.             if ((var0 & var4) == var4) {
  81.                if (!var1) {
  82.                   var2.append(",");
  83.                } else {
  84.                   var1 = false;
  85.                }
  86.  
  87.                var2.append(ARRAY_STRINGS[var3]);
  88.             }
  89.          }
  90.  
  91.          return var2.toString();
  92.       }
  93.    }
  94.  
  95.    public String getActions() {
  96.       if (this.actions == null) {
  97.          this.actions = getActions(this.mask);
  98.       }
  99.  
  100.       return this.actions;
  101.    }
  102.  
  103.    public boolean implies(Permission var1) {
  104.       if (!(var1 instanceof CardPermission)) {
  105.          return false;
  106.       } else {
  107.          CardPermission var2 = (CardPermission)var1;
  108.          if ((this.mask & var2.mask) != var2.mask) {
  109.             return false;
  110.          } else {
  111.             String var3 = this.getName();
  112.             if (var3.equals("*")) {
  113.                return true;
  114.             } else {
  115.                return var3.equals(var2.getName());
  116.             }
  117.          }
  118.       }
  119.    }
  120.  
  121.    public boolean equals(Object var1) {
  122.       if (this == var1) {
  123.          return true;
  124.       } else if (!(var1 instanceof CardPermission)) {
  125.          return false;
  126.       } else {
  127.          CardPermission var2 = (CardPermission)var1;
  128.          return this.getName().equals(var2.getName()) && this.mask == var2.mask;
  129.       }
  130.    }
  131.  
  132.    public int hashCode() {
  133.       return this.getName().hashCode() + 31 * this.mask;
  134.    }
  135.  
  136.    private void writeObject(ObjectOutputStream var1) throws IOException {
  137.       if (this.actions == null) {
  138.          this.getActions();
  139.       }
  140.  
  141.       var1.defaultWriteObject();
  142.    }
  143.  
  144.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  145.       var1.defaultReadObject();
  146.       this.mask = getMask(this.actions);
  147.    }
  148. }
  149.